package org.ehe.business.drawing.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ehe.business.drawing.domain.DesignDrawing;
import org.ehe.business.drawing.domain.bo.DesignDrawingBo;
import org.ehe.business.drawing.domain.dto.BatchUploadResultDTO;
import org.ehe.business.drawing.domain.dto.DesignDrawingQueryDTO;
import org.ehe.business.drawing.domain.vo.DesignDrawingVO;
import org.ehe.business.drawing.domain.dto.DesignDrawingDTO;
import org.ehe.common.mybatis.core.page.PageQuery;
import org.ehe.common.mybatis.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author :zhangnn
 * @className :DesignDrawingService
 * @description: TODO
 * @date 2025-07-22 10:25:35
 */
public interface DesignDrawingService extends IService<DesignDrawing> {
    /**
     * 分页查询图纸列表
     */
    TableDataInfo<DesignDrawingVO> pageDrawings(DesignDrawingBo bo, PageQuery pageQuery);

    /**
     * 新增图纸
     */
    Long addDrawing(List<DesignDrawingDTO> dtos);

    /**
     * 编辑图纸
     */
    Boolean editDrawing(List<DesignDrawingDTO> dtos);

    /**
     * 删除图纸
     */
    Boolean deleteDrawing(Long id);

    /**
     * 批量删除图纸
     */
    Boolean batchDeleteDrawings(Long[] ids);

    /**
     * 查看图纸详情
     */
    DesignDrawingVO getDrawingDetail(Long id);

    /**
     * BOM提取操作
     */
    Boolean extractBom(Long id);

    /**
     * 检查图纸编码是否存在
     */
    Boolean checkDrawCodeExists(String drawCode, Long excludeId);

    /**
     * 生成文件编码
     *
     * @return
     */
    String buildDrawCode();

    Object getDrawingStatistics();

    Object getSearchSuggestions(String keyword);

    String exportDrawingList(DesignDrawingBo bo);

    /**
     * 批量上传图纸（异步）
     * 根据文件名自动创建点位并上传图纸
     *
     * @param projectId 项目ID
     * @param files     文件列表
     * @return 任务ID和初始状态
     */
    BatchUploadResultDTO batchUploadDrawingsAsync(Long projectId, List<String> files);

    /**
     * 查询批量上传任务进度
     *
     * @param taskId 任务ID
     * @return 任务进度和结果
     */
    BatchUploadResultDTO getUploadTaskStatus(String taskId);

    /**
     * 批量上传图纸（同步，内部使用）
     * 根据文件名自动创建点位并上传图纸
     *
     * @param projectId 项目ID
     * @param files     文件列表
     * @return 批量上传结果
     */
    BatchUploadResultDTO batchUploadDrawings(Long projectId, List<String> files);

    /**
     * 获取
     *
     * @param d
     * @return
     */
    // DesignDrawingVO queryInfoById(String d);
}
